package it.traveldream.worker.beans;

import it.traveldream.exception.PacchettoNonValidoException;
import it.traveldreamClient.beans.ComponentiMgrBeanInterface;
import it.traveldreamClient.beans.PacchettiMgrBeanInterface;
import it.traveldreamClient.beans.dto.AlloggioDTO;
import it.traveldreamClient.beans.dto.EscursioneDTO;
import it.traveldreamClient.beans.dto.PkgDTO;
import it.traveldreamClient.beans.dto.TrasportoDTO;
import it.traveldreamClient.beans.dto.VoloDTO;

import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;


		@ManagedBean(name="addpacchettibean")
		@SessionScoped
		public class AddPacchettiBean {
			@EJB
			private PacchettiMgrBeanInterface pkg;
			@EJB
			private ComponentiMgrBeanInterface cmp;
			
			private PkgDTO pacchettoDTO;
			private String idTomodify;
			
			private PkgDTO inPacchettoDTO;
			
			private List<TrasportoDTO> Trasporto;
			
			private List<EscursioneDTO> Escursioni;
			private List<EscursioneDTO> SelectedEscursioni;
			private EscursioneDTO esc;
			
			private List<AlloggioDTO> Alloggi;
						
			
			AlloggioDTO alloggioTmp;
			
			public AlloggioDTO getAlloggioTmp() {
				return alloggioTmp;
			}

			public void setAlloggioTmp(AlloggioDTO alloggioTmp) {
				this.alloggioTmp = alloggioTmp;
			}

			public AddPacchettiBean(){
				pacchettoDTO = new PkgDTO();
				esc = new EscursioneDTO();
				//idTomodify = new String("888");
				AlloggioDTO alloggioTmp = new AlloggioDTO();
				
				
			}
			
			@PostConstruct
			public void init(){
				Trasporto = cmp.getAllTrasporti();
				Escursioni= cmp.getAllEscursioni();
				Alloggi= cmp.getAllAlloggi();
			}

			
			
			
			public PkgDTO getPacchettoDTO() {
					return pacchettoDTO;
			}

			public void setPacchettoDTO(PkgDTO pacchettoDTO) {
				this.pacchettoDTO = pacchettoDTO;
			}

			public String getIdTomodify() {
				return idTomodify;
			}

			public void setIdTomodify(String idTomodify) {
				this.idTomodify = idTomodify;
			}

			public EscursioneDTO getEsc() {
				return esc;
			}

			public void setEsc(EscursioneDTO esc) {
				this.esc = esc;
			}

			public List<EscursioneDTO> getSelectedEscursioni() {
				return SelectedEscursioni;
			}

			public void setSelectedEscursioni(List<EscursioneDTO> selectedEscursioni) {
				SelectedEscursioni = selectedEscursioni;
			}
			

			public List<TrasportoDTO> getTrasporto() {
				return Trasporto;
			}

			public void setTrasporto(List<TrasportoDTO> trasporto) {
				Trasporto = trasporto;
			}

			public ComponentiMgrBeanInterface getCmp() {
				return cmp;
			}
			
			public void setCmp(ComponentiMgrBeanInterface cmp) {
				this.cmp = cmp;
			}

			
			public List<AlloggioDTO> getAlloggi() {
				return Alloggi;
			}

			public void setAlloggi(List<AlloggioDTO> alloggi) {
				Alloggi = alloggi;
			}

			public List<EscursioneDTO> getEscursioni() {
				return Escursioni;
			}

			public void setEscursioni(List<EscursioneDTO> escursioni) {
				Escursioni = escursioni;
			}

			public PacchettiMgrBeanInterface getPkg() {
				return pkg;
			}

			public void setPkg(PacchettiMgrBeanInterface pkg) {
				this.pkg = pkg;
			}

			public String register() {
				 	pacchettoDTO.setEscursioni(this.getSelectedEscursioni());
			    	try {
						pkg.save(pacchettoDTO);
					} catch (Exception e) {
						System.out.println(e.getMessage());
						FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,e.getMessage(),e.getMessage())); 
						return "AddPacchetto";
					}
					return "index?faces-redirect=true";
				}
			
			public String loadPkg(){
				
				//inPacchettoDTO = new PkgDTO();
				
				//inPacchettoDTO = pkg.getPKGtoModify(idTomodify);
				
				alloggioTmp=Alloggi.get(0);
				inPacchettoDTO.setEscursioni(this.getSelectedEscursioni());
				
				pacchettoDTO=inPacchettoDTO;
			
				return "/employ/ModifyPacchetto?faces-redirect=true";
			}
			
			public String update(){
				pacchettoDTO.setAlloggio(alloggioTmp);
				pacchettoDTO.setEscursioni(this.getSelectedEscursioni());

				try {
					pkg.update(pacchettoDTO);
				} catch (PacchettoNonValidoException e) {
					System.out.println(e.getMessage());
					FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,e.getMessage(), 
																	"")); 
					return "AddPacchetto";
				}
				return "index?faces-redirect=true";
			}

			public PkgDTO getInPacchettoDTO() {
				return inPacchettoDTO;
			}

			public void setInPacchettoDTO(PkgDTO inPacchettoDTO) {
				this.inPacchettoDTO = inPacchettoDTO;
			}
			
			/*public void cleanup() {
			    HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
			    .getExternalContext().getSession(true);
			   // session.
			    //removeAttribute("page1MB");
			   // session.
			}*/
			
			
			 
			
		}

